#pragma once
#include<assert.h>
#include<list>
namespace hcc
{
	template<class T,class con=std::list<T>>
	class Queue
	{
	public:
		Queue() 
		{}
		T& front()
		{
			return _con.front();
		}
		void back()
		{
			return _con.back();
		}
		void push(const T& data)
		{
			_con.push_back(data);
			++_size;
		}
		void pop()
		{
			_con.pop_front();
			--_size;
		}
		size_t size()
		{
			return _size;
		}
		bool empty()
		{
			return _size == 0;
		}
	private:
		con _con;
		size_t _size;
	};
};











//namespace bit
//
//{
//

//
//
//
//    template<class T, class Con = deque<T>>
//
//    class queue
//
//    {
//
//    public:
//
//        queue();
//
//        void push(const T& x);
//
//        void pop();
//
//        T& back();
//
//        const T& back()const;
//
//        T& front();
//
//        const T& front()const;
//
//        size_t size()const;
//
//        bool empty()const;
//
//    private:
//
//        Con _c;
//
//    };
//
//};